![]() interrupt controller, system and process
专利摘要:
INTERRUPTION DISTRIBUTION SCHEME. In one embodiment, an interrupt controller can implement an interrupt distribution scheme to distribute interrupts among multiple processors. The scheme can consider several processor states in determining which processor should receive a certain interrupt. For example, the processor's state may include whether or not it is in standby, whether or not interrupts are allowed, whether or not the processor responded to previous interrupts, etc. The interrupt controller can implement timeout mechanisms to detect that an interrupt is being delayed (for example, after being offered to a processor). The interruption can be reevaluated when a timeout expires, and potentially offered to another processor. The interrupt controller can be configured to automatically and atomically mask an interrupt in response to sending an interrupt vector for the interrupt to a responding processor. 公开号:BR112013013300B1 申请号:R112013013300-7 申请日:2011-11-17 公开日:2021-01-05 发明作者:Josh P. De Cesare;Ruchi Wadhawan;Erik P. Machnicki;Mark D. Hayter 申请人:Apple Inc; IPC主号:
专利说明:
FIELD OF THE INVENTION [0001] This invention relates to the field of interruption controllers. DESCRIPTION OF RELATED TECHNIQUE [0002] Digital systems generally include one or more processors that run software, and several hardware devices, which can be controlled by the software. For example, digital systems include: computerized systems, such as desktop computers, laptops, net tops, servers, workstations, etc; mobile devices, such as cell phones, personal digital assistants, smartphones, etc .; and other devices for special purposes. Hardware devices can generally provide certain functionality, such as storage (for example, disk drives, flash memory, optical drives, etc.), communications (for example, wireless network operation), and other network functionality. input / output (touch screen, keyboard, mouse, monitor, audio, etc.). [0003] Hardware devices are typically designed to operate for a period of time without software intervention. When software intervention is required (for example, when a driver corresponding to the device needs to be executed), hardware devices can signal an interruption. The interrupt is transmitted to one of the processors in the system, which can suspend the execution of a task to execute a code corresponding to the interrupt (for example, the interrupt routine service code and / or driver code) . [0004] When systems include more than one processor, a given interruption needs to be provided to one (and only one) of the processors. A static distribution scheme can be used, in which each device interrupt is mapped to a particular processor, and the mapping is not changed very often. That is, the same processor generally promotes a certain interruption. These static schemes can result in long interrupt latencies if the target processor is not able to respond to the interruption immediately. If multiple processors can receive a given interrupt, there is a race condition, when processors try to respond to the interrupt. These running conditions can reduce performance and / or energy efficiency in the system. SUMMARY [0005] In one embodiment, an interrupt controller can implement an interrupt distribution scheme, to distribute interrupts among multiple processors. The scheme can consider the state of the processors in determining which processor should receive a given interrupt. For example, the processor's state may include whether or not the processor is in a standby state, whether or not interrupts are allowed, whether or not the processor responded to previous interrupts, etc. Considering the state of the processor when distributing interrupts, interrupt latency can be reduced in some embodiments. Alternatively or in addition, the interrupt controller can implement timeout mechanisms to detect that an interrupt is being delayed (for example, after being offered to a processor). The interruption can be reevaluated when a waiting time has expired, and potentially offered to another processor. [0006] In one embodiment, an interrupt controller can be configured to automatically and atomically mask an interrupt in response to the transmission of an interrupt vector for the interrupt to a responding processor. The interrupt controller can serialize the processors' acknowledgments as part of atomic masking. Consequently, each interrupt is transmitted to a processor, and not more than one processor, in these embodiments. BRIEF DESCRIPTION OF THE DRAWINGS [0007] The detailed description presented below makes reference to the attached drawings, which are briefly described below. [0008] Figure 1 is a block diagram of an embodiment of a system including processors, an interrupt controller and various devices that generate interruptions. [0009] Figure 2 is a flow chart illustrating the operation of an interrupt controller embodiment, to send an interrupt to a processor. [00010] Figure 3 is a flowchart illustrating the operation of an interrupt controller embodiment, in response to a processor interrupt acknowledgment. [00011] Figure 4 is a flow chart illustrating the operation of an interrupt controller embodiment, to identify the processors eligible for an interrupt. [00012] Figure 5 is a flow chart illustrating the operation of an embodiment of an interrupt controller, to select an eligible processor. [00013] Figure 6 is a block diagram of an embodiment of an interrupt controller in more detail. [00014] Figure 7 is a block diagram of an embodiment of a mask / SW circuit (software) O shown in Figure 6. [00015] Figure 8 is a block diagram of an embodiment of an interrupt transmission circuit shown in Figure 6. [00016] Figure 9 is a block diagram illustrating a realization of waiting times in the interrupt controller shown in Figure 6. [00017] Figure 10 is a block diagram of another embodiment of a system, including an interrupt controller. [00018] Figure 11 is a block diagram of yet another embodiment of a system. [00019] Although the invention is susceptible to several modifications and alternative forms, its specific embodiments are shown by way of example in the drawings and will be described in detail in this specification. It should be understood, however, that the drawings and detailed description of it are not intended to limit the invention to the particular form described, but, on the contrary, the intention is to cover all modifications, equivalents and alternatives that are included in the spirit and scope of the present invention, as defined by the embodiments. The headings used in this specification are for organizational purposes only, and are not mentioned so that they are used to limit the scope of the description. As used throughout this patent application, the word "may" is used in a permissive sense (ie, meaning it has the potential to), rather than mandatory (ie, meaning must). Similarly, the words "include", "including" and "includes" mean including, but not limited to. [00020] Several units, circuits or other components can be described as "configured to" perform one or more tasks. In these contexts, "configured for" is a generic statement of a structure generally meaning "having a set of circuits that" performs one or more tasks during operation. As such, the unit / circuit / component can be configured to perform the task, even when the unit / circuit / component is not currently connected. In general, the circuitry, which forms the structure corresponding to "configured for", may include hardware circuits to implement the operation. Similarly, several units / circuits / components can be described as performing one or more tasks, for convenience in the description. These descriptions should be interpreted as including the term "configured for". When indicating that a unit / circuit / component, which is configured to perform one or more tasks, it is not expressly intended to invoke the interpretation of paragraph six of standard 35 U.S.C. £ 112 for that unit / circuit / component. DETAILED DESCRIPTION OF THE ACCOMPLISHMENTS [00021] Several embodiments are described below for conducting outages in a system. In general, an interrupt can be a communication from a device (for example, a peripheral device) to a processor, to make the processor suspend the execution of the code that the processor is currently executing, to execute the corresponding code interruption. The communication of the interruption from the device can be in several forms (for example, assertion of a signal, transmission of an interrupt message, etc.). The device can use the processor to cause the routine interrupt service code and / or driver code for the device to be executed. Processing of the suspended code can continue, once the processor has taken at least a few steps to process the interrupt. In some cases, the suspended code may remain suspended until the interruption is fully processed. In other cases, a delayed interrupt processing scheme can be employed, in which the routine interrupt service code records the interrupt for further processing, then returns to the suspended code. [00022] The interrupt controller can receive interrupts from several devices in the system, and can offer interrupts to processors. The offer of an interruption can generally refer to the transmission of an indication of the interruption to the processor. In some embodiments, the interrupt can be offered by asserting an interrupt request signal to the processor. In other embodiments, the interrupt can be offered by transmitting a message to the processor identifying the interruption. The processor can respond to the interrupt in several ways. For example, a processor can transmit an interrupt acknowledgment to indicate acceptance of the interrupt. Interrupt acknowledgment can be transmitted in several ways. For example, the interrupt acknowledgment can be a record read in a register designated as the interrupt acknowledgment register. The interrupt acknowledgment can be a specific transmission on the processor interface. In other embodiments, processors can report the acceptance or rejection of an interrupt. [00023] As will be highlighted in more detail below, in some embodiments, the interrupt controller may consider various processor states that may affect the processor's ability to accept interrupts (or accept interrupts with low latency) . In this way, the interrupt controller can dynamically identify a processor to accept a given interrupt, based on the state of the processor on the various processors at the given interruption. A subsequent occurrence of the same interruption can be provided on a different processor, based on a different state of the processor at the subsequent occurrence. In some embodiments, selecting a processor based on the state of the processor can lead to a lower overall interrupt latency. Generally, the state of the processor can include the state that is programmed directly into the processor (for example, enable / disable interrupt, privilege level, etc.) and / or the state that is directly applied to the processor (for example, blocking power, clock lock, etc.). [00024] In some embodiments, the interrupt controller can be configured to atomically mask an interrupt in response to the interrupt being accepted by a processor. In this way, the interrupt controller can avoid transmitting the same interrupt to more than one processor. Additionally, the source of the interruption can be sensitive at the level, and, thus, the interruption can remain indicated until the source receives the targeted processing. The mask can prevent the interruption from being recorded again, until the mask is explicitly changed by the software. The automatic masking of interrupts can also allow interrupt recognition to be independent of the state. The interrupt controller need not be aware of whether or not the processor is, for example, in the middle of processing an interrupt. Consequently, the design of the interrupt controller can be simplified compared to other interrupt mechanisms. [00025] Figure 1 is a block diagram of an embodiment of a system 5, including multiple processors 60A - 60B, an interrupt controller 50, a power controller 52 and multiple peripherals 64A - 64B. Peripherals 64A - 64B can be coupled to interrupt controller 50, and can be configured to signal interrupts to interrupt controller 50 ("Interrupt" in Figure 1). The power controller 52 can include an offline register 54, and can be coupled to the interrupt controller 50. Particularly, the contents of the offline register 54 and the status of the additional processor ("State P" in Figure 1 ) relating to processors 60A - 60B can be provided by the power controller 52 to the interrupt controller 50. In particular, processors 60A - 60B can both provide the status of the additional processor ("State P") to the interrupt controller 50, and both can receive an interrupt request ("IRO") from the interrupt controller 50. Processors 60A - 60B and interrupt controller 50 can be additionally coupled via a controller interface register interface. interrupt 62 ("Interface IC Reg" in Figure 1). The interrupt controller 50 may further include a mask recorder 56 and at least one timeout recorder 58. [00026] In one embodiment, interrupt controller 50 is coupled to receive State P from processors 60A - 60B, and is configured to include State P in determining which processor 60A - 60B is to be offered an interrupt. Consequently, the selected processor 60A - 60B can be dynamically determined for a given interruption, depending on the current P-states associated with the processors. The interrupt controller 50 can offer the interrupt to the selected processor 60A - 60B (for example, by indicating the IRQ to the selected processor 60A - 60B in Figure 1). The processor 60A - 60B can accept the interrupt, for example, by transmitting an interrupt acknowledgment (IAck) to the interrupt controller 50. By including the status of the processor in the decision to send an interrupt to a particular processor 60A - 60B, the latency for global interrupt processing can be reduced by reducing the latency of the interrupt offering to the 60A - 60B processor to that processor accepting the interrupt. [00027] The status of the processor, which is monitored by the interrupt controller 50, can include any state that may affect the processor's ability to respond to an interrupt. For example, the processor state of the power controller 52 may include the power state of the processors. If a 60A - 60B processor is in a low-strength state, such as a wait state, that processor may need time to move to a higher-strength state, such as a full state, to respond to inter - rupture. Consequently, a processor, which is already in the highest power state, may be a better selection for offering the interruption. The processor state of the power controller 54 can also include the offline state of the offline recorder 54. The offline state can be programmed by software running on system 5. If a particular processor is indicated as offline in the offline recorder 54, that processor may be unavailable to conduct interrupts, and thus may not be selected to be offered for the interruption. [00028] The processor status of 60A - 60B processors may include an indication of whether or not interrupts are currently enabled on that processor. A processor, which currently has interrupts disabled, may be less likely to quickly accept an offered interrupt than a processor, which currently has interrupts enabled. In one embodiment, processors 60A - 60B may include a register, which stores interrupt enable or interrupt disable bits. The bit can be transmitted by processors 60A - 60B for external monitoring. Another processor state of 60A - 60B processors may include, for example, an indication of the processor's privilege status. A processor, in a low privilege state (for example, a user state), may be executing an application code, while a processor, in a more privileged state (for example, supervisor state), may be running an operating system code. A processor in a less privileged state may be a better selection to offer the interruption than a processor in a more privileged state. Any other state of the processor can be considered in several embodiments. [00029] In embodiments that support virtualization of interrupt processors and controllers, an additional processor state can be considered for sending interrupts. In these physical environments, a peripheral device (and thus its interruption) can be deprived of a host operating system (OS). That is, the device can be assigned to the guest OS, and may not be available for use by other guest OSs, which are running on the system, until the device is no longer assigned to the guest OS. For an outage that is private to a guest OS, the outage latency can be decreased if the outage is sent to one of the processors, which is already running that guest OS. Each processor can be configured to provide an indication that the guest OS is running on that processor to the interrupt controller (for example, a guest marker), and the interrupt controller can be configured to consider that indication when selecting a processor for receive the interruption. A timeout can be supported to determine that the selected processor has not responded to the interrupt, and a processor running the virtual machine hypervisor / monitor can be selected in response to the timeout. If no processor is running the targeted guest OS, a processor can be selected using the remaining shipping rules. In some embodiments, a different interrupt indication can be used to interrupt the hypervisor / virtual machine monitor (for example, there may be an IRQ for each hypervisor / virtual machine monitor and the guest). In these embodiments, the IRQ of the hypervisor / monitor of the virtual machine can be indicated in the targeted guest OS, which is not running on any processor. [00030] In one embodiment, the interrupt controller 50 can withstand one or more waiting times. In response to the offer of an interrupt to a selected processor, the interrupt controller 50 can initialize a timeout counter, with a corresponding timeout value from the timeout register 58. If the timeout expires without the selected processor responding to the interrupt, the interrupt controller 50 can reevaluate the interrupt and offer it to another processor. Consequently, if the originally selected processor is delayed in response, another processor can be selected and can respond. In one embodiment, the offer is not terminated from the previously selected processor. Consequently, the processor that will respond first can be presented by the interrupt. In other embodiments, the offer may be terminated by the processor previously selected (for example, by not indicating your IRQ). [00031] Waiting times can be programmed by software, and can be based on the expected latencies of certain events. For example, if interrupts are disabled on a processor, they can remain disabled for a typical period of time (for example, 20 microseconds). The timeout can be programmed to be slightly longer than the typical time, so that the processor can enable interrupts and accept the interruption before the timeout occurs, if the interruptions are to be interrupted. for the typical period of time. If a processor is in a low-energy state, a certain period of time may elapse while the processor is taken out of the low-energy state (for example, 60 microseconds). The timeout can be programmed to be slightly longer than this time period, so that the processor can reach the full state and accept the interruption before the timeout occurs. [00032] In one embodiment, multiple timeout values can be supported and can be programmed into the timeout records 58. Each timeout value can correspond to a processor state and acceptance latency associated interruption. In response to the selection of a processor, to offer an interrupt, the interrupt controller 50 can initialize a timeout counter with the timeout that corresponds to the state of the processor. In another embodiment, the timeout value may depend both on the current state of the selected processor, as well as on the current state of the next processor, which is likely to be selected, if the currently selected processor timeout expires. . If an interrupt is offered to a processor and the wait time expires before the processor executes the interrupt acknowledgment, the processor can be considered non-responsive and the processor's non-responsiveness can affect subsequent interrupt send operations. [00033] In addition to the measured timeout values for each processor (from the IRQ indication to interrupt acceptance, for example, by means of an interrupt acknowledgment), a timeout can be measured for each interruption. The interruption wait time can be measured by sending an interrupt to a specific processor, to execute the interruption. The expiration of the interruption wait time may result in the interruption being reevaluated, and the interruption offered to a different processor, similar to the expiration of a waiting time for the processor discussed above. In one embodiment, the interrupt waiting time may not cause a processor to be considered as unresponsive, and thus cannot affect subsequent interrupt send operations. [00034] In one embodiment, the interrupt controller 50 can atomically mask an interrupt, which is transmitted to a processor in response to a processor interrupt acknowledgment. The interrupt controller 50 can include the mask register 56, which can include a mask bit for each interrupt supported by the interrupt controller 50. The interrupt controller 50 can set the mask bit to a mask state, to mask the interruption. The mask bit can be set to a non-mask state, so as not to mask the interruption. In one embodiment, the mask state is the adjusted state, and the non-mask state is the clean state, although assignments of opposite states can be used in other embodiments. [00035] To atomically mask an interrupt, the interrupt mask takes effect, so the interrupt will not be provided in response to a subsequent interrupt acknowledgment, even if that subsequent interrupt acknowledgment is received as soon as possible. possible. If there is no chaining on the interrupt controller 50, for example, the masking effects can be chained together, even though the subsequent interruption acknowledgment can access the interrupt state. In one embodiment, the interrupt controller 60 can serialize the interrupt acknowledgments, preventing an interrupt acknowledgment from detecting an interrupt, which will be masked by a previous interrupt acknowledgment. It should be noted that atomic masking of interrupts can be implemented regardless of the interrupt sending with awareness of the processor state discussed above, and can also be implemented in single processor embodiments. [00036] As mentioned above, the offline status can be programmable by running software on system 5 (for example, on processors 60A - 60B), to indicate that certain processors are unavailable for interruptions. In comparison, a processor in a low-power state may experience greater latency in accepting interrupts, but the processor in a low-power state is still available for interruptions. In one embodiment, the interrupt controller 50 does not offer an interrupt to an offline processor. There may be several reasons why the software prevents interrupts from being sent to a given processor, considering it to be offline. For example, a processor may be executing an important sequence of codes, and it may be desirable, from the point of view of simplicity, to prevent interruptions. The code sequence can be, for example, the sequence of boot codes. Other code sequences, which can be considered important, are code sequences that access sensitive memory locations, such as places where secret codes are stored. Other examples can be those related to energy. That is, it can be more energy efficient for a system, as a whole, if the processor goes offline. There may not be enough space in the system's thermal envelope to have the processor in line. That is, the temperature can rise a lot, if the processor is in line. [00037] As discussed above, the interrupt controller 50 can be configured to offer an interrupt to a processor. In the illustrated embodiment, the IRQ signal can be indicated to offer an interruption. Other embodiments can communicate an interrupt message to the processor, which can capture and acknowledge the message. The processor can respond to the offer in any objective manner. For example, interrupt acknowledgment (IAck), discussed above, can be transmitted. Any positive statement that the processor is accepting an interrupt, offered by the interrupt controller, can constitute an answer. Still other embodiments can explicitly accept or reject an offered interruption. [00038] 64A - 64B peripheral devices can include any targeted input / output devices, or other hardware devices, which are included in system 5. For example, 64A - 64B peripherals can include networked peripherals , such as one or more networked media access controllers (MCA), such as Ethernet MAC or a wireless fidelity controller (WiFi). An audio unit, including several audio processing devices, can be included on the 64A - 64B peripherals. One or more digital processors can be included on the 64A - 64B peripherals. 64A - 64B peripherals can include any other desired functionality, such as synchronizers, a secret chip code memory, an encryption mechanism, etc., or any combination thereof. 64A - 64B peripherals may include graphics processing hardware, video processing hardware, video encoders / decoders and / or video hardware. [00039] Each peripheral device 64A - 64B can communicate one or more interrupts to the interrupt controller 50. In the illustrated embodiment, each peripheral device 64A - 64B can include an interrupt signal to signal an interruption to the interrupt controller 50. Some devices may include multiple interruption signals. Furthermore, other devices can use an interrupt message to carry the interrupt and the associated state, if any. [00040] Processors 60A - 60B can implement any instruction tuning architecture, and can be configured to execute instructions defined in that instruction tuning architecture. Processors 60A - 60B can employ any microarchitecture, including scalar, superscalar, chained, super-chained, out of order, in order, speculative, non-speculative, etc., or their combinations. Processors 60A - 60B can include a set of circuits, and can optionally implement microcoding techniques. 60A - 60B processors do not have to be symmetrical. That is, processors 60A - 60B can be different, they can implement different instruction settings, etc. For example, 60A - 60B processors can include multi-purpose central processing units (CPUs), specific processors, embedded processors, digital signal processors, etc. [00041] In addition to providing status P to interrupt controller 50 and receiving IRQs from interrupt controller 50, processors 60A - 60B can implement interface 62 for communication with interrupt controller 50. Interconnection 62 can carry log access operations (for example, read and write) between processors 60A - 60B and interrupt controller 50. These operations can include an address, which can be decoded by interrupt controller 50, to identify the record being read / written. The addresses can be part of the memory address space of 60A - 60B processors (that is, registers can be mapped by memory). Alternatively, addresses can be part of a configuration space, an I / O space, or any other address space. [00042] One of the record access operations can be a read operation to an IAck record. Reading the IAck record can be the interrupt acknowledgment discussed above, and the data, returned in response to the read IAck record, can be the interrupt vector corresponding to the interrupt being transmitted to the processor. Other record access operations can be read or written from the offline record 54 and from one or more timeout records 58. The mask record 56 can be updated using two record write operations. Writing to an adjusted mask register can set one or more mask bits in the mask register (for example, putting the identified mask bits in the mask state). Writing in a clear mask register can clear one or more mask bits (for example, placing the mask bits identified in the non-mask state). The adjusted mask register and the clean mask register can have different addresses, which can be decoded by the interrupt controller 50, to set or clear the bits in the mask register. That is, the adjusted mask register and the clean mask register may not physically exist, but may alternatively specify operations to occur in the mask register. Similarly, the IAck register may not physically exist, but it may result in the transmission of an interrupt vector to the processor, which reads the register. Other record access operations can read / write other records on the interrupt controller 50 (not shown in Figure 1). [00043] Interface 62 can have any configuration. For example, interface 62 may be a multi-purpose interface (eg, bus, point-to-point interconnect, etc.), which is also used to transmit memory operations and other types of operations from 60A - 60B processors. Interface 62 can pass through one or more other units between processors 60A - 60B and interrupt controller 50. For example, in an embodiment shown in Figure 10, the interface can pass through a bridge / DMA unit. [00044] As mentioned above, processors 60A - 60B can be in various states of power. In a full state, the processor can be ready to execute instructions and can accept interrupts. The integral state can include multiple voltage / frequency pairs, on which the operation can be supported (for example, depending on the workload, available energy, etc.). There may also be one or more low energy states. In a low power state, the 60A - 60B processor may be idle (not executing instructions), and a period of time may be required to transition to the full state. The length of time to pass may be dependent on the particular low energy state. For example, the processor can be placed in a clock circuit, in which the clocks are not switching on the processor. A few cycles may be necessary to reset the clocks and prepare the processor for execution. In another low-power state, the power for the logic circuitry in the processor can be switched, but memory arrangements, such as caches, in the processor can still be energized. Returning from that switched energy state to the integral state, one can include energizing the logic circuitry and waiting for the energy to stabilize. In yet another low-power state, the power to the processor's logic circuitry and memory arrangements can be switched. The return of this switched state of power may include energizing the circuitry, and may also include initializing the memory arrays. Other low-energy states may be possible. The various low power states can also be referred to as standby states on the processor. [00045] It should be noted that several interconnections in system 5 are shown in Figure 1, relating to the processing of interruptions. However, several other interconnections can be provided in system 5 (for example, a memory controller, a memory attached to the memory controller, etc.). It should also be noted that one or more of the components illustrated in Figure 1, and / or other components, can be integrated into a single integrated circuit like a system on a chip. There can be any number of the various components shown in Figure 1 (for example, any number of processors 60A - 60B, any number of peripherals 64A - 64B, etc.). [00046] Now returning to Figure 2, a flowchart is shown illustrating the operation of an embodiment of the interrupt controller 50, to send an interrupt to a processor. Although the blocks are shown in a particular order for ease of understanding, other orders can be used. The blocks can be executed in parallel in a combinatorial logic in the interrupt controller 50. The blocks, block combinations and / or the flowchart, as a whole, can be linked by multiple clock cycles. The interrupt controller 50 can be configured to implement the operation illustrated in Figure 2. [00047] By using State P corresponding to the various processors 60A - 60B, the interrupt controller 50 can be configured to identify which of the processors 60A - 60B are eligible to receive an interrupt offer (block 70). A given processor may be eligible to receive an interrupt offer, if the P state of the processor (possibly compared to the P state of other processors) indicates that it is acceptable to offer the interrupt to that processor. Some processors may be ineligible. For example, a processor, which has already been offered the interruption and whose time has expired, cannot be eligible for the interruption. In embodiments that implement a communication to reject an interrupt, in addition to accepting an interrupt, a processor, which has rejected the interrupt, cannot be eligible. A processor, which is offline, cannot be eligible. In addition, a given interrupt can be specified to search for a subset of the 60A - 60B processors (for example, as part of the interrupt message or via a programmable status associated with the interrupt). Non-targeted processors cannot be eligible. [00048] The interrupt controller 50 can be configured to select one of the eligible processors (block 72) and offer the interrupt to the selected processor (for example, by indicating the IRQ to the selected processor) (block 74). The interrupt controller 50 can be configured to initialize a timeout counter for the selected processor, possibly based on the P state of the selected processor, in some embodiments (block 76). The interrupt controller 50 can be configured to determine whether the interrupt has been accepted (decision block 78). For example, interrupt controller 50 can detect a processor's interrupt acknowledgment. If the interrupt is accepted (decision block 78, leg "yes"), the sending of the interrupt can be completed. If the interrupt has not yet been accepted (decision block 78, leg "no") and the waiting time for the processor, to which the interrupt is currently being offered, has not expired (decision block 80, leg " no "), the interrupt controller 50 can continue to check the waiting time and acceptance of the interrupt. If the interrupt has not yet been accepted (decision block 78, leg "no") and the processor waiting time, to which the interrupt is offered, is detected (decision block 80, leg "yes"), the interrupt controller 50 may consider the processor ineligible for the interrupt (block 82), and may select another eligible processor (block 72), to which the interrupt is offered (block 74). [00049] Then returning to Figure 3, a flowchart is shown illustrating the operation of an embodiment of the interrupt controller 50, in response to an interrupt acknowledgment (IAck). Although the blocks are shown in a particular order for ease of understanding, other orders can be used. The blocks can be executed in parallel in a combinatorial logic in the interrupt controller 50. The blocks, block combinations and / or the flowchart, as a whole, can be linked by multiple clock cycles. The interrupt controller 50 can be configured to implement the operation illustrated in Figure 3. [00050] The interrupt controller 50 can return the interrupt vector, which identifies the interrupt sent to the processor (block 84). If more than one interrupt is offered concurrently to the processor, the interrupt controller 50 can select one of the offered interrupts. For example, the vector with the lowest number of interruptions can be selected, or the vector with the largest number of interruptions can be accepted. The oldest interrupt can, in another example, be selected. In embodiments that implement a priority between interruptions, the highest priority interruption can be selected. An interruption can be selected at random. The interrupt controller 50 can also automatically mask the interrupt identified by the interrupt vector (block 86). [00051] Now returning to Figure 4, a flowchart is shown illustrating an embodiment of identification of eligible processors by the interrupt controller 50 (block 70 of Figure 2). Although the blocks are shown in a particular order for ease of understanding, other orders can be used. The blocks can be executed in parallel in a combinatorial logic in the interrupt controller 50. The blocks, block combinations and / or the flowchart, as a whole, can be linked by multiple clock cycles. The interrupt controller 50 can be configured to implement the operation illustrated in Figure 4, for each processor in the system. [00052] If the processor is offline (as indicated in the offline record), or if the interrupt has already been sent to the processor (decision block 90, leg "yes" and decision block 92, leg "yes "), the interrupt controller can be configured to identify the processor as ineligible (block 94). If not, and the processor is in a standby state or other low power state (decision block 96, leg "yes"), interrupt controller 50 can be configured to identify as eligible and include the processor in the eligibility group 3 (block 98). If the processor is not offline, nor already routed, and not in the waiting state (decision blocks 90, 92, legs "no"), and the processor is not responsive or interrupts are disabled on processor (decision block 100, leg "yes"), interrupt controller 50 can be configured to identify the processor as eligible and include the processor in eligibility group 2 (block 102). [00053] As previously mentioned, in some embodiments, a subset of the 60A - 60B processors can be identified as being targeted by a particular interruption. In these embodiments, only processors, which are included in the targeted subset, can be eligible processors. Processors outside the target subset can be treated in a similar way to offline processors, as they cannot be selected to receive interruption offers. [00054] In embodiments that implement interrupt priority, the priority can also be factored in the identification of eligible processors. For example, a processor may be seen as not eligible for an outage (or less eligible than some other processors), if that processor is currently processing a higher priority outage. A processor, which is processing a lower priority interrupt, can be interrupted to process a higher priority interrupt, and thus be considered eligible for the higher priority interrupt. [00055] Eligible processor groups may be in order or preference to offer an interruption, with group 1 being particularly preferred, group 2 being the most preferred next, and group 3 being the least preferred among processors eligible. Group 1 processors are not in a low power state, are responsive to interrupts, and have no interrupts disabled, so they may be more likely to accept an interrupt offered with low latency. Group 2 processors are also not in a low-idle state, but may be unresponsive or may currently have interrupts disabled. Consequently, greater latency can be expected than in group 1 on average. Group 3 processors are in a low-energy state, so the highest latency can be expected, on average, for that group. [00056] Based on the discussion above, the flowchart in Figure 5 can illustrate an embodiment of selecting an eligible processor in interrupt controller 50 (block 72 in Figure 2). Although the blocks are shown in a particular order, for ease of understanding, other orders can be used. The blocks can be executed in parallel in combinatorial logic in the interrupt controller 50. The blocks, block combinations and / or the flowchart, as a whole, can be linked by multiple clock cycles. The interrupt controller 50 can be configured to implement the operation illustrated in Figure 5. [00057] If group 1 is not empty (decision block 106, leg "no"), interrupt controller 50 can be configured to select a processor from group 1 (block 108). If group 1 is empty and group 2 is not empty (decision block 106, "yes" leg, and decision block 110, "no" leg), interrupt controller 50 can be configured to select a processor from the group 2 (block 112). If groups 1 and 2 are empty and group 3 is not empty (decision blocks 106 and 10, legs "yes", and decision block 114, leg "no"), interrupt controller 50 can be configured to select a processor from group 3 (block 116). Within a given group, any eligible processor can be selected. For example, the lowest numbered processor can be selected, or the highest numbered processor can be selected. A processor can be selected at random, or a processor, which has not been selected recently, can be selected. [00058] Now returning to Figure 6, a block diagram of an embodiment of the interrupt controller 50 is shown. In the embodiment of Figure 6, the interrupt controller 50 includes a registration interface unit 120, a mask / software OR (SW) unit 122, an interrupt router 124 and multiple processor schedulers. , such as processor scalers 126A - 126B. The registration interface unit 120 can be coupled to the registration interface IC 62, as well as the mask OR / SW unit 122, the interrupt router 124, and, optionally, the processor schedulers 126A - 126B. In general, the recording interface unit 120 can be coupled to any other components in the interrupt controller 50, which can be controlled or updated through read / write recording operations on interface 62. The OR mask / SW 122 can include mask registration 56, can be attached to receive interruptions from various sources of interruptions in the system, and can be attached to interrupt router 124. Interrupt router 124 can be attached to receiving offline states and other P states from processors, may include timeout log 58, and can be coupled to processor schedulers 126A - 126B. Each of the 126A - 126B processor schedulers can be coupled to provide an IRQ signal to a corresponding 60A - 60B processor. [00059] The OR mask / SW 122 unit can be configured to apply the mask to interrupts received from interrupt sources (for example, peripherals 64A - 64B), providing masked interrupts to interrupt router 124. In a In this embodiment, the mask OR / SW 122 unit can also provide a mechanism for executing software on processors, to cause an interruption (as if the corresponding source had indicated the interruption). The software can transmit log access operations on interface 62 to perform desired interruptions. The mask OR unit / SW 122 can mask the interruptions logically from OR software with the actual interrupts received from the respective sources, to produce each interrupt, and can mask the interrupts logically Ored, according to the mask register 56 , to produce the masked interrupts. Other embodiments may not implement the OR software, and may simply mask the interrupts received from the interruption sources, to provide the masked interrupts to the interrupt router 124. [00060] Interrupt router 124 can receive masked interrupts, and can be configured to route interrupts to processors based on offline status, P states, wait times, etc. That is, the interrupt router 124 can implement the flowchart of Figure 2, in one embodiment. The interrupt router can signal the processor scheduler 126A - 126B, corresponding to the processor to which the interrupt is sent. [00061] Each of the 126A - 126B processor schedulers can be configured to indicate the IRQ signal to the corresponding 60A - 60B processor, responsive to receiving an interrupt from the interrupt router 124. The IRQ signal can be the interrupt request signal. general. Various implementations of processors may also support interrupts for special purposes, or other interrupts as well. For example, some embodiments can support a low latency interrupt in addition to the IRQ. The embodiments can withstand several interrupts of synchronizers, in addition to interruptions of external devices shown in Figure 6. The processor scheduler 126A - 126B can be configured to schedule synchronizer interruptions in the IRQ signal, in addition to interrupts external devices, and / or can schedule synchronizer interrupts to other interrupts and can schedule other types of interruptions. [00062] The registry interface unit 120 can be configured to decode the registry access operations of interface 62, and to interact with other components of the interrupt controller 50, to complete the registry access operations. For register read operations, register interface unit 120 can be configured to return the data read from the register read operation to the boot processor. The registry interface unit 120 can be configured to decode the address of the registry access operation, to determine which registry is being accessed. In addition, the source processor can also identify which record is being accessed (for example, for records per processor, such as the IAck record for IAck commands). [00063] Now returning to Figure 7, a block diagram of an embodiment of a part of the mask OR / SW 122 unit, corresponding to an interruption, is shown. A similar set of circuits can be provided for each of the other interruptions. The circuitry shown in Figure 7 is an embodiment illustrating the operation of unit 122, and other implementations can be used, including any Boolean equivalents of the circuitry shown in Figure 7. The embodiment of Figure 7 includes a flop (operation floating point per second) of mask 130, an OR gate 132, a software interrupt flop 134, an OR gate 136, and an AND gate 138. [00064] The mask flop 130 can store the mask bit for the interrupt (and thus be part of the mask register 56, along with similar flops for other interrupts). The mask bit can be adjusted in this embodiment, to mask the interruption and clean to unmask the interruption. Consequently, an inverted output of the mask flop 130 is provided to the AND 138 port, to mask the interruption (generated by hardware or software), which is transmitted by the OR 136 gate. That is, if the mask is adjusted, the inverted output of mask flop 130 is clear, and the output of AND gate 138 is clear. If the mask bit is cleared, the inverted output of mask flop 130 is set and the interrupt passes through the AND gate 138, like the masked interrupt. Thus, in this embodiment, interruptions are highly active. Other embodiments can use low active interrupts, and a NAND port can be used. The OR 136 gate logically executes the OR software on the external interrupt with the output of the software interrupt flop 134. Consequently, if the external interruption (hardware) is indicated or the software has indicated the interruption, the output of the interruption OR 136 is indicated. [00065] The mask bit can be set on flop 130, responsive to an IAck cycle, which causes the interrupt to be released to the recognition processor, or the software adjusts the mask by writing to the mask register set (OR 132 port). The adjustment of the mask bit automatically in response to the IAck cycle, by the interrupt controller hardware, can implement the atomic adjustment of the mask bit. The next IAck cycle can therefore receive a different interrupt (since that interrupt is now masked), and thus the race condition for read interruptions, by multiple processors, can be conducted properly. Allowing the software to also set the mask bit can allow an interrupt to be disabled effectively. The software can also, for example, clear the mask bit after executing the interrupt. [00066] In the illustrated embodiment, the software can adjust the mask bits in mask register 56 by performing a write operation on an adjusted mask register. The bits set in the writing data can identify which mask bits to set. The recording interface unit 120 can decode the set mask registration writing, and can indicate the SW-adjusted mask signals in the writing data. Similarly, the software can perform a write operation on a clean mask register, and can indicate the clear software mask signals, based on the writing data. [00067] In a similar way, the software can promote one or more interrupts with an adjusted interrupt record writing operation. The write data can identify which interrupt bits to set, and register interface unit 120 can indicate software-adjusted interrupt signals to adjust flops 134. To clear a software-generated interrupt, the software can issue a clean interrupt record write operation. The write data can identify which interrupt bits to clear (for example, with the bits set in the write data in the corresponding bit positions), and the register interface unit 120 can indicate the interrupt signals cleared by color software - respondents. [00068] Both flops 130 and 134 are illustrated as having adjusted and clean entries. Flops can be implemented in any desired mode (for example, adjusted flops - reset (SR), D flops with logic to adjust or clear the flop based on the adjusted or cleared inputs, etc.). [00069] Figure 8 is a block diagram of an embodiment of the interrupt router 124 for one of the interrupts. A similar set of circuits can be provided for each of the other interruptions. In the embodiment of Figure 8, the interrupt router 124 can include a route selection circuit 140, a timeout control unit 142 (which includes the timeout recorder 58), and a set of 144A - 144B routed flops. There can be a 144A - 144B routed flop for each 60A - 60B processor. [00070] Route selection circuit 140 can receive the offline state and P states, as well as the masked interruption of the mask OR / SW 122 unit. Route selection circuit 140 can implement the operation illustrated in Figure 2, to identify the eligible processors (block 70) and select the eligible processors (block 72). In some embodiments, route selection circuit 140 can implement the embodiments illustrated in Figures 4 and 5. Route selection circuit 140 can transmit SetRoute signals (one signal for each processor, which is configured to perform interruptions). The SetRoute signal for the selected processor can be displayed, and the other SetRoute signals can be eliminated. Each SetRoute signal can be coupled to the adjusted input of the respective 144A - 144B flops, which can be the output signals for the P 126A - 126B Escalators, respectively. [00071] In this embodiment, the interrupt can remain routed to a specific processor, until the masked interrupt is eliminated ("interrupt elimination", coupled to the clean input of each 144A - 144B flop). That is, the interrupt remains routed until it is accepted by a processor. Consequently, even though the interrupt expires and is routed to another processor, it is also routed to the "timeout" processor. In this way, if the processor time expires, but is subsequently ready to respond to the interruption, the IRQ for that processor may still be indicated at the subsequent moment. Other embodiments can clear the routed state, either at the wait time or at any time when the interrupt is offered to another processor. [00072] The timeout control unit 142 can include the circuitry for measuring timeouts based on the timeout values programmed in logs 58. That is, the timeout control unit can include counters, to count the time between IRQ indication and acceptance (or waiting time) for the processor waiting time, and counting the time between routing the interrupt to a given processor and executing the interruption ( or dwell time). If a timeout is detected, the timeout control unit 142 can be configured to indicate the timeout for route selection circuit 140, which can reevaluate and select a processor to route the interrupt. The waiting time control unit 142 can implement the operation illustrated in blocks 76 and 80 of Figure 2 (and route selection 110 can implement block 82 in response to the waiting time). [00073] It should be noted that the time control unit 142 can implement 2 counters per interruption, and there can be a relatively large number of interruptions. In a realization, a counter can be shared by the various waiting times, to reduce the hardware cost for the waiting time counters. An embodiment that can perform the sharing is shown in Figure 9. In the embodiment of Figure 9, a free-mode counter 150 is shown, which increments each clock cycle of a clock input on the counter. Counter 150 can implement any number of bits in various embodiments, based on the clock frequency, which measures the time of the counter and the desired ranges of waiting times. [00074] Counter bits 150 can be coupled to multiple switches 152 and 154. Multiplexer 152 is controlled based on the processor timeout of the timeout record 58, and multiplexer 154 is controlled based on the time timeout record interruption wait times 58. More particularly, the bit, which is selected by multiplexers 152 and 154, can be the bit that is expected to change state to a logic, twice within the timeout period order. The selected bit is then fed to a set of rising edge detection circuits 156 and 158, respectively, which generates a pulse signal that is displayed each time the selected bit changes from logic zero to logic one. [00075] The pulse signal from circuit set 156 can be coupled to processor timeout control unit 142A. Processor timeout control unit 142A can be configured to initialize a timeout counter 160 to zero, in response to a corresponding processor IAck, or in response to the IRQ being cleared (OR port 162 and multiplexer 164) . Otherwise, the output from multiplexer 166 is selected. Multiplexer 166 can be configured to select the current value of counter 160, unless the pulse signal is indicated, the IRQ for the processor is indicated and the timeout has not yet been detected (AND port 168), in which case the incremented value is selected. In this way, each pulse signal indication can cause the timeout counter 160 to be incremented if the IRQ is indicated, until the timeout is reached. [00076] A comparator 170 is coupled to the output of counter 160, and can be configured to compare the counter to 3. If the counter is three, then a waiting time can be detected. Once counter bit 150 is selected to switch high twice within the selected timeout period, counting three pulses of the signal can guarantee that the timeout time is exceeded. Although the timeout may not be perfectly accurate in this case, the accuracy may be sufficient for the purposes of the interrupt controller 50, while implementing only a two-bit counter 160 for each timeout and sharing the free-mode counter 150 The processor timeout control unit 142A can signal the timeout, indicating that the processor is not responsive. [00077] The interrupt timeout control unit 142B can be similar to the processor timeout control unit 142A using the pulse signal from circuitry 158. In the case of the timeout control unit of interrupt 142B, the waiting time can be measured from the interrupt routing to a processor for the execution of the interrupt (for example, to eliminate the masked interrupt). Counter 172 can be initialized to zero by multiplexer 176, in response to eliminating the interrupt or routing the interrupt to any processor (OR gate 174). Subsequently, the counter can be increased by multiplexer 178, responsive to a pulse, while the masked interruption is still indicated (AND gate 180). The waiting time can be indicated when comparator 182 detects that counter 172 has reached three. [00078] It should be noted that, although the specific logic circuitry is illustrated in Figure 9, for control units 142A - 142B (which can both be part of the timeout control unit 142, shown in Figure 8, in this embodiment), other embodiments can use any logic circuitry. In particular, any Boolean equivalents from the illustrated circuit pack can be used. In addition, more synchronizers can be used to detect various other waiting times, in other embodiments, as desired. [00079] Now returning to Figure 10, a block diagram of another embodiment of system 5 is shown. In the embodiment of Figure 10, system 5 includes an integrated circuit (IC) 10, coupled to external memories 12A - 12B. In the illustrated embodiment, integrated circuit 10 includes a central processing unit (CPU) block 14, which includes one or more processors 16 and a level 2 (L2) cache 18. Other embodiments may not include the L2 cache 18 and / or may include other cache levels. In addition, achievements that include more than two processors 16 and that include only one processor 16 are considered. Integrated circuit 10 further includes a set of one or more peripherals in non-real time (NRT) 20 and a set of one or more peripherals in real time (RT) 22. In the illustrated embodiment, the RT peripherals include a processor image 24, one or more image tubes 26, a translation unit 46 and a port referee 28. Other embodiments may include more or less image processors 24, more or less image tubes 26 and / or any peripherals in additional real time as desired. The image processor 24 can be coupled to receive image data from one or more cameras in system 5. Similarly, image tubes 26 can be coupled to one or more image controllers (not shown), which control one or more images in the system. The image processor 24 can be attached to the translation unit 46, which can also be attached to the port referee 28. The port referee 28 can also be attached to the image tubes 26. In the illustrated embodiment, the block CPU 14 is coupled to a bridge / direct memory access (DMA) controller 30, which can be coupled to one or more peripheral devices 32 and / or one or more peripheral interface controllers 34. The bridge / DMA 30 can include an I / O processor - IOP - 184). The number of peripheral devices 32 and peripheral interface controllers 34 can vary from zero to any desired number in various embodiments. The system 5 shown in Figure 1 further includes a graphics unit 36, including one or more graphics controllers, such as G0 38A and G1 38B. The number of graphics controllers per graphics unit and the number of graphics units may vary in other embodiments. As shown in Figure 1, system 5 includes a memory controller 40 coupled to one or more physical interface circuits (PHYs) from memory 42A - 42B). Memory PHYs 42A - 42B are configured for communication on pins of integrated circuit 10 for memories 12A - 12B. Memory controller 40 also includes a set of ports 44A - 44E. Ports 44A - 44B are coupled to the graphic controllers 38A - 38B, respectively. CPU block 14 is coupled to port 44C. NRT 20 peripherals and RT 22 peripherals are attached to ports 44D - 44E, respectively. The number of ports included in a memory controller 40 can be varied in other embodiments, as can be the number of memory controllers. The number of memory PHYs 42A - 42B and corresponding memories 12A - 12B can be one or more than two in other embodiments. The interrupt controller 50 and the power controller 52 are also illustrated in Figure 10 (and can include the offline register 54, the mask register 56 and the timeout register 58, respectively, as shown in Figure 1). [00080] In the illustrated embodiment, the interrupt controller 50 can receive interrupts from the peripheral interface controller 34, the peripherals 32, the graphics units 38A - 38B, the RT 22 peripherals and the NRT peripherals 20. Consequently, in this embodiment, the peripheral interface controller 34, peripherals 32, graphics units 38A - 38B, peripherals RT 22 and peripherals NRT 20 can be examples of peripherals 64A - 64B in Figure 1. In other embodiments, interrupts from subsets can be received by the interrupt controller 50. In the illustrated embodiment, any of the processors 16 can execute the interrupts and the IOP 184 can execute the interrupts. Consequently, in this embodiment, processors 16 and IOP 184 can be examples of processors 60A - 60B in Figure 1. [00081] Additionally, in this embodiment, the registration interface IC 62 can pass from the processors 16 through the CPU block 14 to the bridge controller / DMA 30, then to the interrupt controller 50. More particularly, the bridge controller / DMA 30 can include a programmed I / O controller (PIO), which dominates the operations of the PIO. Registry access operations can be PIO operations in this embodiment. [00082] In one embodiment, each of the ports 44A - 44E can be associated with a particular type of traffic. For example, in one embodiment, types of traffic can include RT traffic, NRT traffic, and graphical traffic. Other embodiments may include other types of traffic in addition to or in addition to a subset of the types of traffic mentioned above. Each type of traffic can be characterized differently (for example, in terms of requirements and behavior), and the memory controller can treat traffic types differently, to provide greater performance based on characteristics., For example , RT traffic requires each memory operation to be performed within a specified period of time. If the latency of the operation exceeds the specific time period, the erroneous operation can occur on the RT peripheral. For example, image data may be lost in the image processor 24 or the image displayed on the monitors, to which the image tubes 26 are attached, may be distorted. RT traffic can be characterized, for example, as isochronous. On the other hand, graphical traffic may be of relatively high bandwidth, but it is not sensitive to latency. NRT traffic, like from processors 16, is more sensitive to latency for performance reasons, but survives higher latency. That is, NRT traffic can generally be promoted at any latency, without causing erroneous operation on NRT traffic generation devices. Similarly, higher bandwidth graphical traffic less sensitive to latency can generally be promoted to any latency. Other NRT traffic may include audio traffic, which is of relatively low bandwidth, and can generally be promoted with reasonable latency. Most of the peripheral traffic can also be NRT (for example, traffic to storage devices, such as magnetic, optical or solid state storage). By providing ports 44A - 44E associated with different types of traffic, memory controller 40 can be exposed to different types of traffic in parallel. [00083] As mentioned above, the RT 22 peripherals can include the image processor 24 and the image tubes 26. The image tubes 26 can include a set of circuits, to search for one or more image frames and mix the frames to create a monitor image. The image tubes 26 can further include one or more video threads, and the video frames can be mixed with the (relatively) static image frames to create frames for display at the video frame rate. The result of the image tubes 26 can be a stream of pixels, which will be displayed on the monitor image. The pixel values can be transmitted to an image controller for display on the monitor screen. The image processor 24 can receive camera data and process the data so that an image is stored in memory. [00084] Returning to memory controller 40, a port can generally be a communication point on memory controller 40, for communication with one or more sources. In some cases, the port can be dedicated to a source (for example, ports 44A - 44B can be dedicated to graphics controllers 38A - 38B, respectively). In other cases, the port can be shared between multiple sources (for example, processors 16 can share CPU port 44C, NRT 20 peripherals can share NRT 44D port, and RT 22 peripherals, such as image tubes 26 and image processor 24 can share the RT 44E port, a port can be coupled to a single interface for communication with one or more sources, so when the sources share an interface, there may be an arbitrator on the source side of the interface, to select between the sources. For example, the L2 cache 18 can serve as an arbitrator for CPU port 44C to memory controller 40. Port arbitrator 28 can serve as an referee for the RT 44E port, and a similar port referee (not shown) can be an arbitrator for the NRT 44D port The single source on a port or the combination of sources on a port can be referred to as an agent. Each 44A - 44E port is coupled to a communication interface action with their respective agent. The interface can be any type of communication medium (for example, a bus, a point-to-point interconnection, etc.) and can implement any protocol. In some embodiments, ports 44A - 44E can all implement the same protocol and interface. In other embodiments, different ports can implement different interfaces and / or protocols. In further embodiments, the memory controller 40 may be single port. [00085] In one embodiment, each source can assign a quality of service (QoS) parameter to each memory operation transmitted by that source. The QoS parameter can identify a service level requested for the memory operation. Memory operations with QoS parameter values, asking for higher service levels, may take precedence over memory operations, which may have lower service levels. Each memory operation can include a flow ID (FID). The FID can identify a memory operation as being part of a flow of memory operations. A stream of memory operations can generally be related, while memory operations from different flows, even from the same source, may not be related. A part of the FID (for example, a source field) can identify the source, and the rest of the FID can identify the flow (for example, a flow field). In this way, an FID can be similar to a transaction ID, and some sources may simply transmit a transaction ID as an FID. In this case, the source field of the transaction ID can be a source field of the FID and the sequence number (which identifies the transaction between transactions from the same source) of the transaction ID can be the flow field of the FID. In some embodiments, different types of traffic may have different definitions of QoS parameters. That is, different types of traffic may have different sets of QoS parameters. [00086] The memory controller 40 can be configured to process the QoS parameters received on each port 44A - 44E, and can use the relative values of the QoS parameters to scale the memory operations received on the ports, with respect to other memory operations that port and with respect to other memory operations received on other ports. More specifically, memory controller 40 can be configured to compare QoS parameters, which are taken from different sets of QoS parameters (for example, QoS RT parameters and QoS NRT parameters), and can be configured to make decisions scheduling based on QoS parameters. [00087] In some embodiments, memory controller 40 can be configured to update the QoS levels for pending memory operations. Various update mechanisms can be supported. For example, memory controller 40 can be configured to update the QoS level for pending memory operations of a responsive flow to receive another memory operation from the same flow, which has a QoS parameter specifying a higher level QoS. This form of QoS update can be referred to as an in-band update, since the QoS parameters, transmitted using the normal memory operation transmission process, also serve as an implicit update request for the operations of memory in the same stream. Memory controller 40 can be configured to drive pending memory operations from the same port or source, but not from the same stream, such as a newly received memory operation specifying a higher QoS level. As another example, memory controller 40 can be configured for coupling with a sideband interface from one or more agents, and can update the QoS levels responsive to receiving an update request on the sideband interface. . In another example, memory controller 40 can be configured to track the relative age of pending memory operations. The memory controller 40 can be configured to update the QoS level of old memory operations at certain ages. The ages at which the update takes place may depend on the current QoS parameter of the old memory operation. [00088] Processors 16 can implement any instruction set architecture, and can be configured to execute the instructions defined in that instruction set architecture. Processors 16 can employ any microarchitecture, including scalar, superscalar, chained, super-chained, out of order, in order, speculative, non-speculative, etc., or their combinations. Processors 16 can include one or more level 1 caches, and therefore cache 18 is an L2 cache. Other embodiments may include multiple levels of caches on processors 16, and cache 18 may be the next level down in the hierarchy. Cache 18 can use any size and any configuration (adjusted associative, direct mapped, etc.). [00089] The graphics controllers 38A - 38B can be any set of graphics processing circuits. Generally, graphic controllers 38A - 38B can be configured to synthesize objects, which will be displayed in a frame buffer. Graphics controllers 38A - 38B may include graphics processors, which can run graphics software to perform some or all of the graphics operation, and / or hardware acceleration of certain graphics operations. The degree of hardware acceleration and software implementation can vary from implementation to implementation. [00090] NRT 20 peripherals may include any non-real time peripherals which, for reasons of performance and / or bandwidth, are provided independent of access to memory 12A - 12B. That is, access by the NRT 20 peripherals is independent of the CPU block 14, and can continue in parallel with the memory operations of the CPU block. Other peripherals, such as peripheral 32 and / or peripherals coupled to a peripheral interface, controlled by the peripheral interface controller 34 may also be peripherals in real time, but may require independent access to memory. Various embodiments of NRT 20 peripherals can include video encoders and decoders, set of scaler / rotator circuits, set of image compression / decompression circuits, etc. [00091] The bridge / DMA controller 30 may comprise a set of circuits, for interconnecting one or more peripherals 32 and one or more peripheral interface controllers 34 to the memory space. In the illustrated embodiment, the bridge / DMA controller 30 can interconnect the memory operations of the peripheral controllers / peripheral interfaces, by CPU block 14, to memory controller 40. CPU block 14 can also maintain cohesion. between the interconnected memory operations and the memory operations of the processors 16 / L2 cache 18. The L2 cache 18 can also arbitrate the memory operations interconnected with the memory operations of the processors 16, which will be transmitted in the interface of CPU to CPU port 44C. The bridge / DMA controller 30 may also provide a DMA operation on behalf of peripherals 32 and peripheral interface controllers 34 to transfer data blocks to and from memory. More particularly, the DMA controller can be configured to perform transfers to and from memory 12A - 12B, by memory controller 40, on behalf of peripherals 32 and peripheral interface controllers 34. The DMA controller can be programmable by processors 16, to perform DMA operations. For example, the DMA controller can be programmed by the descriptors. Descriptors can be data structures stored in memory 12A - 12B, which describe DMA transfers (for example, source and destination addresses, size, etc.). Alternatively, the DMA controller can be programmable through the records on the DMA controller (not shown). [00092] Peripherals 32 may include any desired input / output devices or other hardware devices, which are included in integrated circuit 10. For example, peripherals 32 may include networked peripherals, such as one or more controllers. networked media (MAC) access, such as Ethernet MAC or a wireless fidelity (WiFi) controller. An audio unit, including several audio processing devices, can be included on peripherals 32. One or more digital processors can be included on peripherals 32. Peripherals 32 can include any other desired functionality, such as synchronizers, a memory of secret chip codes, an encryption mechanism, etc., or any combination thereof. [00093] Peripheral interface controllers 34 can include any controllers for any type of peripheral interface. For example, peripheral interface controllers may include multiple controllers, such as a universal serial bus (USB), an express peripheral component interconnect controller (PCIe), an instant memory interface, input pins input / output (I / O) for generic purposes, etc. [00094] Memories 12A - 12B can be any type of memory, such as dynamic random access memory (DRAM), synchronous DRAM (SDRAM), dual data rate SDRAM (DDR, DDR2, DDR3, etc.) (including mobile versions of SDRAMs, such as mDDR3, etc., and / or low-energy versions of SDRAMs, such as LLDDR2, etc.), RAMBUS DRAM (RDRAM), static RAM (SRAM), etc. One or more memory devices can be coupled to an integrated circuit board to form memory modules, such as single in-line memory modules (SIMMs), dual in-line memory modules (DIMMs), etc. . Alternatively, devices can be assembled with integrated circuit 10 in a chip-to-chip configuration, a packet-to-packet configuration, or a multi-chip module configuration. [00095] Memory PHYs 42A - 42B can handle the low-level physical interface in memory 12A - 12B. For example, memory PHYs 42A - 42B can be responsive for synchronizing signals, for proper synchronization with synchronous DRAM memory, etc. In one embodiment, memory PHYs 42A - 42B can be configured to lock into a clock provided within integrated circuit 10, and can be configured to generate a clock used by memory 12. [00096] It should be noted that other embodiments may include other combinations of components, including subsets or supersets of the components shown in Figure 1, and / or other components. Although a case of a given component can be shown in Figure 1, other embodiments can include one or more cases of the given component. Similarly, throughout this detailed description, one or more cases of a given component can be included, even if only one is shown, and / or embodiments that include only one case can be used, even if multiple cases are used. shown. [00097] Going back to Figure 11, a block diagram of an embodiment of a 350 system is shown. In the illustrated embodiment, system 350 includes at least one case of the integrated circuit 10 coupled to external memory 12 (for example, memory 12A - 12B in Figure 10). Integrated circuit 10 can also be an integrated circuit incorporating some or all of the components shown in Figure 1. Integrated circuit 10 is coupled to one or more peripherals 354 and external memory 12. A power source 356 is also provided, which supplies the supply voltages to the integrated circuit 10, as well as one or more supply voltages to memory 12 and / or peripherals 354. In some embodiments, more than one case of integrated circuit 10 can be included ( and more than one external memory 12 can also be included). [00098] Peripherals 354 can include any set of circuits desired, depending on the type of system 350. For example, in one embodiment, system 350 can be a mobile device (for example, a personal digital assistant (PDA), a smartphone, etc.) and the 354 peripherals can include devices for various types of wireless communication, such as wifi, Bluetooth, cell phone, global positioning system, etc. 354 peripherals can also include additional storage, including RAM storage, solid state storage, or disk storage. 354 peripherals can include user interface devices, such as a monitor screen, including touch monitor screens or multi-touch monitor screens, keyboard or other input devices, microphones, speakers, etc. In other embodiments, system 350 can be any type of computing system (for example, desktop personal computer, laptop, workstation, net top, etc.). [00099] Several variations and modifications will become evident for those skilled in the art, once the description presented above is fully considered. The embodiments are intended to be interpreted to include all of these variations and modifications.
权利要求:
Claims (16) [0001] 1. Interrupt controller (50), comprising: a set of circuits (122) coupled to receive interruptions from one or more devices (64A, 64B) in a system (5); and an interrupt router (124) coupled to the circuitry (122) and configured to select a processor (60A, 60B) from several processors (60A, 60B) in the system (5), for a first received interruption, and in which the interrupt router (124) is configured to cause an interrupt to be signaled to the selected processor (60A, 60B), where the interrupt router (124) is configured to monitor a state of the various processors (60A , 60B) and select the selected processor (60A, 60B) responsive to the state, in which the interrupt router (124) is further configured to initialize a timeout counter (58) in response to signaling the interruption to the processor (60A, 60B) selected, characterized by the fact that: the interrupt router (124) is configured to select another processor (60A, 60B), responsive to detect the expiration of the timeout counter ( 58) for interruption, without a response from the proc essador (60A, 60B) selected, and where the interrupt router (124) is configured to consider the selected processor (60A, 60B) as unresponsive in response to the timer expiration detection wait (58) for the interrupt, without a response from the selected processor (60A, 60B), and where the interrupt router (124) is configured to identify the unresponsive processor (60A, 60B) as the least desired for selection for subsequent interruption. [0002] 2. Interrupt controller (50), according to claim 1, characterized by the fact that the response is an interrupt acknowledgment response. [0003] 3. Interrupt controller (50), according to claim 2, characterized by the fact that it also comprises a set of circuits (120), configured to respond to the interrupt recognition response with an interrupt vector, which identifies - indicates the first interruption. [0004] 4. Interrupt controller (50), according to claim 3, characterized by the fact that the interrupt recognition is a reading of an interrupt recognition record, defined for the interrupt controller (50), and where the circuitry (120), configured to respond to interrupt acknowledgment, is a record interface unit (120) coupled to receive record access operations, and in which data returned in response to reading include the interrupt vector. [0005] 5. Interrupt controller (50) according to any one of claims 1 to 4, characterized by the fact that the processor status (60A, 60B) includes whether or not the processor (60A, 60B) is in a waiting state. [0006] 6. Interrupt controller (50) according to any one of claims 1 to 5, characterized in that the status of the processor (60A, 60B) includes whether or not interruptions are allowed in the processor (60A, 60B ). [0007] Interrupt controller (50) according to any one of claims 1 to 6, characterized in that the status of the processor (60A, 60B) includes an offline state programmed by software. [0008] Interrupt controller (50) according to any one of claims 1 to 7, characterized by the fact that the status of the processor (60A, 60B) includes an indication of a virtualized guest operating system (5) being executed on the processor (60A, 60B). [0009] Interrupt controller (50) according to any one of claims 1 to 8, characterized in that a value for the timeout counter (58) is selected from several values responsive to a state of the processor (60A, 60B). [0010] 10. Interrupt controller (50), according to claim 9, characterized by the fact that the value is selected even more responsive to a state of a second processor (60A, 60B) of the various processors (60A, 60B) . [0011] 11. System (5), characterized by the fact that it comprises: several devices (64A, 64B); several processors (60A, 60B); and the interrupt controller (50) as defined in any one of claims 1 to 9, the interrupt controller (50) coupled to the various devices (64A, 64B) and to the various processors (60A, 60B). [0012] 12. Process, comprising the steps of: an interrupt controller (50) receiving an interrupt; the interrupt controller (50) identifying two or more eligible processors (60A, 60B) from multiple processors (60A, 60B) in a system (5) including the interrupt controller (50), where identification is, at least in part, responsive to a state of each processor (60A, 60B); select a processor (60A, 60B) from two or more eligible processors (60A, 60B); offer interruption to the selected processor (60A, 60B); detecting a waiting time for the selected processor (60A, 60B), without receiving an interrupt acknowledgment from the selected processor (60A, 60B); characterized by the fact that it still comprises: considering the selected processor (60A, 60B) as non-responsive, in response to detecting the waiting time, without receiving an interrupt acknowledgment from the selected processor (60A, 60B); identify the non-responsive processor (60A, 60B) as the least desired for selection for subsequent interruption; select a different processor (60A, 60B) from the various processors (60A, 60B); and offer the interrupt to the different processor (60A, 60B). [0013] 13. Process according to claim 12, characterized by the fact that the eligible processors (60A, 60B) have not yet been selected to receive the interruption. [0014] 14. Process according to claim 12, characterized by the fact that eligible processors (60A, 60B) have allowed interruptions. [0015] 15. Process according to claim 12, characterized by the fact that a first processor (60A, 60B) of the two or more processors (60A, 60B) is in a low power state, and a second processor (60A, 60B) of the two or more processors (60A, 60B) is not in the low power state, and the selection comprises selecting the second processor (60A, 60B) as the selected processor (60A, 60B). [0016] 16. Process according to claim 14, characterized by the fact that a first processor (60A, 60B) of the two or more processors (60A, 60B) is in a low power state, and the selection comprises select the first processor (60A, 60B) as the selected processor (60A, 60B), even if the first processor (60A, 60B) is in the low power state.
类似技术:
公开号 | 公开日 | 专利标题 BR112013013300B1|2021-01-05|interrupt controller, system and process US8458386B2|2013-06-04|Atomic interrupt masking in an interrupt controller to prevent delivery of same interrupt vector for consecutive interrupt acknowledgements US9405688B2|2016-08-02|Method, apparatus, system for handling address conflicts in a distributed memory fabric architecture KR100634248B1|2006-10-16|Event delivery US8234429B2|2012-07-31|Monitoring interrupt acceptances in guests US7769918B2|2010-08-03|Apparatus and method for high performance volatile disk drive memory access using an integrated DMA engine KR20170031697A|2017-03-21|On-demand shareability conversion in a heterogeneous shared virtual memory US8806232B2|2014-08-12|Systems and method for hardware dynamic cache power management via bridge and power manager US9684613B2|2017-06-20|Methods and systems for reducing spurious interrupts in a data storage system US9330024B1|2016-05-03|Processing device and method thereof US9152588B2|2015-10-06|Race-free level-sensitive interrupt delivery using fabric delivered interrupts US7216240B2|2007-05-08|Apparatus and method for address bus power control
同族专利:
公开号 | 公开日 JP5963282B2|2016-08-03| EP2463781A3|2012-11-21| BR112013013300A2|2016-09-13| JP5923838B2|2016-05-25| EP2463781B1|2015-01-21| US20150113193A1|2015-04-23| US9262353B2|2016-02-16| AU2011338863A1|2013-05-09| TWI447650B|2014-08-01| US20120144172A1|2012-06-07| JP2015079542A|2015-04-23| AU2011338863B2|2015-01-22| TW201229911A|2012-07-16| EP2463781A2|2012-06-13| US8959270B2|2015-02-17| KR20120063436A|2012-06-15| CN102567109B|2015-04-08| JP2013545205A|2013-12-19| KR101320791B1|2013-10-23| HK1171104A1|2013-03-15| CN102567109A|2012-07-11| WO2012078334A1|2012-06-14|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 US3623014A|1969-08-25|1971-11-23|Control Data Corp|Computer communications system| US5517626A|1990-05-07|1996-05-14|S3, Incorporated|Open high speed bus for microcomputer system| US5870621A|1994-12-22|1999-02-09|Texas Instruments Incorporated|Quadrilateral multichip computer systems and printed circuit boards therefor| US5717903A|1995-05-15|1998-02-10|Compaq Computer Corporation|Method and appartus for emulating a peripheral device to allow device driver development before availability of the peripheral device| JP3676882B2|1996-06-12|2005-07-27|株式会社リコー|Microprocessor and its peripheral devices| EP0827085B1|1996-08-20|2006-03-29|Compaq Computer Corporation|Method and apparatus for distributing interrupts in a scalable symmetric multiprocessor system without changing the bus width or bus protocol| US5918057A|1997-03-20|1999-06-29|Industrial Technology Research Institute|Method and apparatus for dispatching multiple interrupt requests simultaneously| JP3699806B2|1997-06-20|2005-09-28|株式会社東芝|Interrupt controller and control system| US6170025B1|1997-08-29|2001-01-02|Intel Corporation|Distributed computer system supporting remote interrupts and lock mechanism| US6105102A|1998-10-16|2000-08-15|Advanced Micro Devices, Inc.|Mechanism for minimizing overhead usage of a host system by polling for subsequent interrupts after service of a prior interrupt| US6701429B1|1998-12-03|2004-03-02|Telefonaktiebolaget Lm Ericsson|System and method of start-up in efficient way for multi-processor systems based on returned identification information read from pre-determined memory location| US6418497B1|1998-12-21|2002-07-09|International Business Machines Corporation|Method and system for interrupt handling using system pipelined packet transfers| JP2000242616A|1999-02-19|2000-09-08|Nec Eng Ltd|Fault processor, fault processing method and recording medium| US6772257B1|1999-12-23|2004-08-03|Intel Corporation|Method and apparatus for processing interrupts| JP2001229147A|2000-02-17|2001-08-24|Nec Shizuoka Ltd|Inter-cpu communication control method and portable information terminal| US20020116563A1|2000-12-12|2002-08-22|Lever Paul D.|Apparatus and method to reduce interrupt latency in shared interrupt systems| US6792492B1|2001-04-11|2004-09-14|Novell, Inc.|System and method of lowering overhead and latency needed to service operating system interrupts| US6813665B2|2001-09-21|2004-11-02|Intel Corporation|Interrupt method, system and medium| US20030065497A1|2001-09-28|2003-04-03|Rhoads Monte J.|Power management system to select a power state for a network computer system based on load| US7328294B2|2001-12-03|2008-02-05|Sun Microsystems, Inc.|Methods and apparatus for distributing interrupts| JP2003281112A|2002-03-25|2003-10-03|Fujitsu Ltd|Multiprocessor system| US20040117532A1|2002-12-11|2004-06-17|Bennett Steven M.|Mechanism for controlling external interrupts in a virtual machine system| GB2396445B|2002-12-19|2005-12-21|Advanced Risc Mach Ltd|An interrupt controller and interrupt controlling method for prioritizing interrupt requests generated by a plurality of interrupt sources| US7191349B2|2002-12-26|2007-03-13|Intel Corporation|Mechanism for processor power state aware distribution of lowest priority interrupt| GB2403822B|2003-07-07|2006-05-10|Advanced Risc Mach Ltd|Data processing apparatus and method for handling interrupts| US7222203B2|2003-12-08|2007-05-22|Intel Corporation|Interrupt redirection for virtual partitioning| GB2409543B|2003-12-23|2006-11-01|Advanced Risc Mach Ltd|Interrupt masking control| US7353301B2|2004-10-29|2008-04-01|Intel Corporation|Methodology and apparatus for implementing write combining| US7398343B1|2006-01-03|2008-07-08|Emc Corporation|Interrupt processing system| JP4971676B2|2006-04-28|2012-07-11|ルネサスエレクトロニクス株式会社|Interrupt control circuit and interrupt control method| JP2008015593A|2006-07-03|2008-01-24|Hitachi Ltd|Repeater, program, relay method and communication system| US7721034B2|2006-09-29|2010-05-18|Dell Products L.P.|System and method for managing system management interrupts in a multiprocessor computer system| US8032681B2|2007-09-06|2011-10-04|Intel Corporation|Processor selection for an interrupt based on willingness to accept the interrupt and on priority| US8661167B2|2007-09-17|2014-02-25|Intel Corporation|DMA coalescing| US8453143B2|2007-09-19|2013-05-28|Vmware, Inc.|Reducing the latency of virtual interrupt delivery in virtual machines| US7962679B2|2007-09-28|2011-06-14|Intel Corporation|Interrupt balancing for multi-core and power| US7730248B2|2007-12-13|2010-06-01|Texas Instruments Incorporated|Interrupt morphing and configuration, circuits, systems and processes| US7962771B2|2007-12-31|2011-06-14|Intel Corporation|Method, system, and apparatus for rerouting interrupts in a multi-core processor| JP2009193525A|2008-02-18|2009-08-27|Mitsubishi Electric Corp|Interruption control device| US8190826B2|2008-05-28|2012-05-29|Advanced Micro Devices, Inc.|Write combining cache with pipelined synchronization| JP2010055296A|2008-08-27|2010-03-11|Fujitsu Ltd|Load sharing program and apparatus| EP2166457B1|2008-09-12|2014-04-23|TELEFONAKTIEBOLAGET LM ERICSSON |Interrupt controller and methods of operation| US7849247B2|2008-10-14|2010-12-07|Freescale Semiconductor, Inc.|Interrupt controller for accelerated interrupt handling in a data processing system and method thereof| US8015337B2|2009-03-23|2011-09-06|Arm Limited|Power efficient interrupt detection| US7996595B2|2009-04-14|2011-08-09|Lstar Technologies Llc|Interrupt arbitration for multiprocessors| US8260996B2|2009-04-24|2012-09-04|Empire Technology Development Llc|Interrupt optimization for multiprocessors| US8458386B2|2010-12-07|2013-06-04|Apple Inc.|Atomic interrupt masking in an interrupt controller to prevent delivery of same interrupt vector for consecutive interrupt acknowledgements|US8909836B2|2012-10-08|2014-12-09|Andes Technology Corporation|Interrupt controller, apparatus including interrupt controller, and corresponding methods for processing interrupt request event in system including processor| JP2014106755A|2012-11-28|2014-06-09|Fujitsu Mobile Communications Ltd|Information processor and control method| US9678564B2|2012-12-21|2017-06-13|Nxp B.V.|Multiprocessor system with interrupt distributor| US10534421B2|2013-06-13|2020-01-14|Microsoft Technology Licensing, Llc|Virtual per-processor timers for multiprocessor systems| US9329946B2|2014-02-27|2016-05-03|International Business Machines Corporation|Salvaging hardware transactions| US9361041B2|2014-02-27|2016-06-07|International Business Machines Corporation|Hint instruction for managing transactional aborts in transactional memory computing environments| US9442853B2|2014-02-27|2016-09-13|International Business Machines Corporation|Salvaging lock elision transactions with instructions to change execution type| US9424072B2|2014-02-27|2016-08-23|International Business Machines Corporation|Alerting hardware transactions that are about to run out of space| US9645879B2|2014-02-27|2017-05-09|International Business Machines Corporation|Salvaging hardware transactions with instructions| US9411729B2|2014-02-27|2016-08-09|International Business Machines Corporation|Salvaging lock elision transactions| US9430273B2|2014-02-27|2016-08-30|International Business Machines Corporation|Suppressing aborting a transaction beyond a threshold execution duration based on the predicted duration| US9575890B2|2014-02-27|2017-02-21|International Business Machines Corporation|Supporting atomic accumulation with an addressable accumulator| US9524195B2|2014-02-27|2016-12-20|International Business Machines Corporation|Adaptive process for data sharing with selection of lock elision and locking| US20150242216A1|2014-02-27|2015-08-27|International Business Machines Corporation|Committing hardware transactions that are about to run out of resource| US9311178B2|2014-02-27|2016-04-12|International Business Machines Corporation|Salvaging hardware transactions with instructions| US9471371B2|2014-02-27|2016-10-18|International Business Machines Corporation|Dynamic prediction of concurrent hardware transactions resource requirements and allocation| US9336097B2|2014-02-27|2016-05-10|International Business Machines Corporation|Salvaging hardware transactions| US9262206B2|2014-02-27|2016-02-16|International Business Machines Corporation|Using the transaction-begin instruction to manage transactional aborts in transactional memory computing environments| US9465673B2|2014-02-27|2016-10-11|International Business Machines Corporation|Deferral instruction for managing transactional aborts in transactional memory computing environments to complete transaction by deferring disruptive events handling| US9442775B2|2014-02-27|2016-09-13|International Business Machines Corporation|Salvaging hardware transactions with instructions to transfer transaction execution control| US9524187B2|2014-03-02|2016-12-20|International Business Machines Corporation|Executing instruction with threshold indicating nearing of completion of transaction| KR102309327B1|2014-09-26|2021-10-07|인텔 코포레이션|Apparatus and method for configuring sets of interrupts| KR20160061726A|2014-11-24|2016-06-01|삼성전자주식회사|Method for handling interrupts| US10203955B2|2014-12-31|2019-02-12|Intel Corporation|Methods, apparatus, instructions and logic to provide vector packed tuple cross-comparison functionality| CN104572282A|2015-01-05|2015-04-29|浪潮电子信息产业股份有限公司|Automatic method for binding SAS controller interruption to CPU| US10585826B2|2016-01-25|2020-03-10|Advanced Micro Devices, Inc.|Using processor types for processing interrupts in a computing device| US10802998B2|2016-03-29|2020-10-13|Intel Corporation|Technologies for processor core soft-offlining| CN109144680A|2017-06-27|2019-01-04|阿里巴巴集团控股有限公司|A kind of clock ticktack interrupts setting method and device| TWI621946B|2017-06-28|2018-04-21|緯創資通股份有限公司|Scheduling Method, PCIe Switch and Computer System Using the Same| US11144481B2|2018-04-11|2021-10-12|Apple Inc.|Techniques for dynamically adjusting the manner in which I/O requests are transmitted between a computing device and a storage device| US11113216B2|2019-03-20|2021-09-07|Mediatek Inc.|Dispatching interrupts in a multi-processor system based on power and performance factors| CN111786546B|2020-07-20|2021-10-15|中车青岛四方车辆研究所有限公司|Power module driving system and control method|
法律状态:
2018-12-18| B06F| Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]| 2019-10-01| B06U| Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]| 2020-11-10| B09A| Decision: intention to grant [chapter 9.1 patent gazette]| 2021-01-05| B16A| Patent or certificate of addition of invention granted|Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 17/11/2011, OBSERVADAS AS CONDICOES LEGAIS. |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 US12/962,146|2010-12-07| US12/962,146|US8959270B2|2010-12-07|2010-12-07|Interrupt distribution scheme| PCT/US2011/061197|WO2012078334A1|2010-12-07|2011-11-17|Interrupt distribution scheme| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|